﻿using System;
using System.Collections.Generic;
using System.IO;

namespace ClaseElemento
{
    public class Elemento
    {
        public Elemento(string nom, Int32 ncop, char tip, char sq, string dirpad)
        {
            sql = sq;
            if (sql == 'n')
                nombre = nom;
            else if (sql == 's')
                nombre = nom + "_backup";
            ncopias = ncop;
            TamNombre = nombre.Length;
            tipo = tip;
            dirpadre = dirpad;
            elementos = new SortedList<Int32, string>();
        }
        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        public Int32 NCopias
        {
            get { return ncopias; }
            set { ncopias = value; }
        }
        public char Sql
        {
            get { return sql; }
            set { sql = value; }
        }
        public char Tipo
        {
            get { return tipo; }
            set { tipo = value; }
        }
        public string DirPadre
        {
            get { return dirpadre; }
            set { dirpadre = value; }
        }
        public SortedList<Int32, string> Elementos
        {
            get { return elementos; }
        }
        public void Add(string e)
        {
            if(e.StartsWith(nombre))
                elementos.Add(Convert.ToInt32(e.Substring(TamNombre + 1, 10).Remove(4, 1).Remove(6, 1)), e);
        }
        public void SalvaNuevos()
        {
            for (Int32 i = ncopias; i > 0; --i)
            {
                if(elementos.Count > 0)
                    elementos.RemoveAt(elementos.Count - 1);
            }
        }
        public void BorraAntiguos(StreamWriter log)
        {
            foreach (KeyValuePair<Int32, string> kv in elementos)
            {
                if (tipo == 'd')
                {
                    Directory.Delete(dirpadre + kv.Value,true);
                    log.WriteLine("Directorio Borrado: {0}", kv.Value);
                }
                else if (tipo == 'f')
                {
                    File.Delete(dirpadre + kv.Value);
                    log.WriteLine("Fichero Borrado: {0}", kv.Value);
                }
            }
            log.WriteLine("\r\n");
        }
        private string nombre;
        private Int32 ncopias;
        private Int32 TamNombre;
        private char tipo;
        private char sql;
        private string dirpadre;
        private SortedList<Int32, string> elementos;
    }
}